Skip to main content

Configurando proxy para CLI

Motivação

O objetivo é utilizar proxies como Owasp Zap, Burp Suite e Caido com CLIs para possibilitar interceptação de requests.

Proposta

Aplicações escritas em Go com frequência utilizam a lib padrão http/net. Dentro dessa lib, é possível definir a variável de ambiente HTTP_PROXY que caso seja definida, redirecionará as requests para o endereço especificado permitindo interceptar as requests. Vale ressaltar que essa variável também é utilizada por outras libs e aplicações (não se restringindo apenas a Go).

Passo a Passo

Inicialmente, devemos obter o Certificate Authority, processo que depende do proxy sendo utilizado.

burpsuite

Para obter o certificado, você pode acessar a interface do Burp Proxy diretamente no navegador visitando http://burpsuite ou inserindo a URL do seu escutador de Proxy, por exemplo: http://127.0.0.1:8080.

burpsuite CA

Você pode baixar uma cópia do certificado CA (Certificate Authority) do Burp.

caido
  1. Após iniciar o Caido em sua máquina, navegue até localhost:8080 (ou a porta que você configurou para que o Caido escute) e faça login.

User dropdown.

  1. Clique no ícone da sua conta no canto superior-direito da janela do Caido.
  2. Selecione a aba "CA Certificate" ou navegue até http://localhost:8080/#/settings/certificate..

Utilizando certificados de sistema

Considerando que a ferramenta que receberá as requests está configurada ouvindo em 127.0.0.1:8080, exporta-se a variável de ambiente da seguinte maneira: export HTTPS_PROXY="http://localhost:8080"

Para interceptar pacotes HTTPS/TLS, é necessário instalar o CA (Certificate Authority) do proxy. Com esse arquivo em mãos (com extensão .crt ou .cer) deve-se mover o certificado para o seguinte diretório /usr/share/ca-certificates/trust-source/anchors, após mover o arquivo para o diretório, rode o seguinte comando para instalar o certificado: sudo update-ca-trust extract

Para mais informações a respeito de gerenciamento de CAs.

Resultados

Com tudo funcionando, é possível interceptar as requests e ver exatamente o que está sendo enviado pela CLI, isso pode ser especialmente útil para testes de segurança e debugging em geral.

Requisição realizada pela CLI sendo interceptada pelo proxy.